package com.atguigu.stream.util

import org.apache.spark.SparkConf
import org.apache.spark.streaming.{Duration, Seconds, StreamingContext}

/**
  * 获取 StreamingContext 工具类
  * author 剧情再美终是戏
  * mail 13286520398@163.com
  * date 2020/1/13 15:27
  * version 1.0
  **/
object MySparkStreamContextUtil {

  /**
    * 获取 StreamingContext
    *
    * @Author 剧情再美终是戏
    * @Date 2020/1/13 15:35
    * @param args     main方法参数
    * @param isLocal  是否本地运行 默认为本地
    * @param duration streaming批处理时间 默认3秒一次
    * @return org.apache.spark.streaming.StreamingContext
    * @Version 1.0
    **/
  def get(args: Array[String], isLocal: Boolean = true, duration: Duration = Seconds(3)): StreamingContext = {
    // 1、创建sparkContext
    val conf = new SparkConf().setAppName("StreamingContext")
    if (isLocal) {
      conf.setMaster("local[*]") // 默认情况下走本地模式
    }

    // 如果参数不为空，就设置初始化sparkContext的配置文件
    if (null != args && args.length > 0) {
      for (ag <- args) {
        if (null != ag) {
          val splits = ag.split("::")
          if (null != splits && splits.length == 2) {
            conf.set(splits(0), splits(1))
          }
        }
      }
    }
    // 返回sparkContext
    new StreamingContext(conf, duration)
  }
}
